package com.xiongkf.blockchain.main;

import com.xiongkf.blockchain.pojo.BlockChain;
import com.xiongkf.blockchain.server.HttpServer;
import com.xiongkf.blockchain.service.P2PService;

/**
 * 主函数
 * 
 * @author bear.xiong
 */
public class Main {
	public static void main(String[] args) {
		if (args != null && (args.length == 2 || args.length == 3)) {
			try {
				// 第一个参数：http服务的端口
				int httpPort = Integer.valueOf(args[0]);
				// 第二个参数：websoket服务的端口
				int p2pPort = Integer.valueOf(args[1]);

				BlockChain blockService = new BlockChain();
				P2PService p2pService = new P2PService(blockService);
				// websoket服务初始化
				p2pService.initP2PServer(p2pPort);

				// 如果有第三个参数，那么节点初始化的时候，要去连接其他节点，去同步区块链数据
				if (args.length == 3 && args[2] != null) {
					p2pService.connectToPeer(args[2]);
				}

				// 初始化httpserver的一个实例
				HttpServer httpServer = new HttpServer(blockService, p2pService);
				// 传入端口，初始化http服务
				httpServer.initHTTPServer(httpPort);
			} catch (Exception e) {
				System.out.println("startup is error:" + e.getMessage());
			}
		} else {
			System.out.println("usage: java -jar blockchain.jar 8080 6001");
		}
	}
}
